package model

import scala.collection.mutable.ArrayBuffer
import traits.OperacionesCenso

class Departamento(val _nombre: String,
  val _provincia: Provincia) extends OperacionesCenso {

  def provincia = _provincia

  def nombre = _nombre

  override def fichasAnonimasFiltradas(): ArrayBuffer[FichaAnonima] = {
    fichas.filtrarFichasAnonimas(_.departamento.equals(this))
  }
  def empresasFiltradas(): ArrayBuffer[EmpresaRegular] = {
    fichas.filtrarEmpresas(_.departamento.equals(this))
  }
  

  def equals(dpto: Departamento) = {
    this.nombre.equals(dpto.nombre)
    this.provincia.equals(dpto.provincia)
  }

}

class GrupoDepartamento(val departamentos: ArrayBuffer[Departamento] = new ArrayBuffer[Departamento]) extends OperacionesCenso {

  override def fichasAnonimasFiltradas(): ArrayBuffer[FichaAnonima] = {
    fichas.filtrarFichasAnonimas(departamentos.contains(_))
  }
  override def empresasFiltradas(): ArrayBuffer[EmpresaRegular] = {
    fichas.filtrarEmpresas({e => departamentos.contains(e.departamento)})
  }
  
  

  def agregarDepartamento(d: Departamento) = {
    departamentos += d
  }

  def esHomogeneo(): Boolean = {
	
    if(this.departamentos.isEmpty){
      return true
    } else {
    val unaProvincia = this.departamentos.head.provincia
    departamentos.forall(_.provincia.equals(unaProvincia))
    }
    
  }

  def tieneDeptosDe(p: Provincia): Boolean = {
    departamentos.exists(_.provincia.equals(p))
  }

}